package com.hsjk.szwj.module.smedia.api.mediaManager.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 获取媒资内容信息 Response DTO
 */
@NoArgsConstructor
@Data
public class MediaInfoRespDTO {

    @JsonProperty("RequestId")
    private String requestId;
    @JsonProperty("MediaInfo")
    private MediaInfoBean mediaInfo;

    @NoArgsConstructor
    @Data
    public static class MediaInfoBean {
        @JsonProperty("MediaId")
        private String mediaId;
        @JsonProperty("MediaBasicInfo")
        private MediaInfoBean.MediaBasicInfoBean mediaBasicInfo;
        @JsonProperty("FileInfoList")
        private List<FileInfoListBean> fileInfoList;
        @JsonProperty("AiRoughData")
        private MediaInfoBean.AiRoughDataBean aiRoughData;

        @NoArgsConstructor
        @Data
        public static class MediaBasicInfoBean {
            @JsonProperty("MediaId")
            private String mediaId;
            @JsonProperty("InputURL")
            private String inputURL;
            @JsonProperty("MediaType")
            private String mediaType;
            @JsonProperty("BusinessType")
            private String businessType;
            @JsonProperty("Source")
            private String source;
            @JsonProperty("Title")
            private String title;
            @JsonProperty("Description")
            private String description;
            @JsonProperty("Category")
            private String category;
            @JsonProperty("MediaTags")
            private String mediaTags;
            @JsonProperty("CoverURL")
            private String coverURL;
            @JsonProperty("UserData")
            private String userData;
            @JsonProperty("Status")
            private String status;
            @JsonProperty("CreateTime")
            private String createTime;
            @JsonProperty("ModifiedTime")
            private String modifiedTime;
            @JsonProperty("DeletedTime")
            private String deletedTime;
            @JsonProperty("SpriteImages")
            private String spriteImages;
            @JsonProperty("CateId")
            private Integer cateId;
            @JsonProperty("Biz")
            private String biz;
            @JsonProperty("UploadSource")
            private String uploadSource;
            @JsonProperty("CateName")
            private String cateName;
            @JsonProperty("ReferenceId")
            private String referenceId;
        }

        @NoArgsConstructor
        @Data
        public static class AiRoughDataBean {
            @JsonProperty("Result")
            private String result;
            @JsonProperty("Status")
            private String status;
            @JsonProperty("SaveType")
            private String saveType;
            @JsonProperty("AiCategory")
            private String aiCategory;
            @JsonProperty("AiJobId")
            private String aiJobId;
        }

        @NoArgsConstructor
        @Data
        public static class FileInfoListBean {
            @JsonProperty("FileBasicInfo")
            private FileBasicInfoBean fileBasicInfo;
            @JsonProperty("AudioStreamInfoList")
            private List<AudioStreamInfoListBean> audioStreamInfoList;
            @JsonProperty("VideoStreamInfoList")
            private List<VideoStreamInfoListBean> videoStreamInfoList;
            @JsonProperty("SubtitleStreamInfoList")
            private List<SubtitleStreamInfoListBean> subtitleStreamInfoList;

            @NoArgsConstructor
            @Data
            public static class FileBasicInfoBean {
                @JsonProperty("FileName")
                private String fileName;
                @JsonProperty("FileStatus")
                private String fileStatus;
                @JsonProperty("FileType")
                private String fileType;
                @JsonProperty("FileSize")
                private String fileSize;
                @JsonProperty("FileUrl")
                private String fileUrl;
                @JsonProperty("Region")
                private String region;
                @JsonProperty("FormatName")
                private String formatName;
                @JsonProperty("Duration")
                private String duration;
                @JsonProperty("Bitrate")
                private String bitrate;
                @JsonProperty("Width")
                private String width;
                @JsonProperty("Height")
                private String height;
                @JsonProperty("CreateTime")
                private String createTime;
                @JsonProperty("ModifiedTime")
                private String modifiedTime;
            }

            @NoArgsConstructor
            @Data
            public static class AudioStreamInfoListBean {
                @JsonProperty("Index")
                private String index;
                @JsonProperty("CodecName")
                private String codecName;
                @JsonProperty("CodecLongName")
                private String codecLongName;
                @JsonProperty("CodecTimeBase")
                private String codecTimeBase;
                @JsonProperty("CodecTagString")
                private String codecTagString;
                @JsonProperty("CodecTag")
                private String codecTag;
                @JsonProperty("Profile")
                private String profile;
                @JsonProperty("SampleFmt")
                private String sampleFmt;
                @JsonProperty("SampleRate")
                private String sampleRate;
                @JsonProperty("Channels")
                private String channels;
                @JsonProperty("ChannelLayout")
                private String channelLayout;
                @JsonProperty("Timebase")
                private String timebase;
                @JsonProperty("StartTime")
                private String startTime;
                @JsonProperty("Duration")
                private String duration;
                @JsonProperty("Bitrate")
                private String bitrate;
                @JsonProperty("Fps")
                private String fps;
                @JsonProperty("NumFrames")
                private String numFrames;
                @JsonProperty("Lang")
                private String lang;
            }

            @NoArgsConstructor
            @Data
            public static class VideoStreamInfoListBean {
                @JsonProperty("Index")
                private String index;
                @JsonProperty("CodecName")
                private String codecName;
                @JsonProperty("CodecLongName")
                private String codecLongName;
                @JsonProperty("Profile")
                private String profile;
                @JsonProperty("CodecTimeBase")
                private String codecTimeBase;
                @JsonProperty("CodecTagString")
                private String codecTagString;
                @JsonProperty("CodecTag")
                private String codecTag;
                @JsonProperty("Width")
                private String width;
                @JsonProperty("Height")
                private String height;
                @JsonProperty("HasBFrames")
                private String hasBFrames;
                @JsonProperty("Sar")
                private String sar;
                @JsonProperty("Dar")
                private String dar;
                @JsonProperty("PixFmt")
                private String pixFmt;
                @JsonProperty("Level")
                private String level;
                @JsonProperty("Fps")
                private String fps;
                @JsonProperty("AvgFPS")
                private String avgFPS;
                @JsonProperty("Timebase")
                private String timebase;
                @JsonProperty("StartTime")
                private String startTime;
                @JsonProperty("Duration")
                private String duration;
                @JsonProperty("Bitrate")
                private String bitrate;
                @JsonProperty("NumFrames")
                private String numFrames;
                @JsonProperty("Lang")
                private String lang;
                @JsonProperty("Rotate")
                private String rotate;
                @JsonProperty("Nb_frames")
                private String nb_frames;
            }

            @NoArgsConstructor
            @Data
            public static class SubtitleStreamInfoListBean {
                @JsonProperty("Index")
                private String index;
                @JsonProperty("CodecName")
                private String codecName;
                @JsonProperty("CodecLongName")
                private String codecLongName;
                @JsonProperty("CodecTimeBase")
                private String codecTimeBase;
                @JsonProperty("CodecTagString")
                private String codecTagString;
                @JsonProperty("CodecTag")
                private String codecTag;
                @JsonProperty("Timebase")
                private String timebase;
                @JsonProperty("StartTime")
                private String startTime;
                @JsonProperty("Duration")
                private String duration;
                @JsonProperty("Lang")
                private String lang;
            }
        }
    }
}
